Industrial controllers are special purpose processing devices used for controlling (e.g., automated and semi-automated) industrial processes, machines, manufacturing equipment, plants, and the like. A typical controller executes a control program or routine in order to measure one or more process variables or inputs representative of the status of a controlled process and/or effectuate outputs associated with control of the process. Such inputs and outputs can be binary, (e.g., “1” or “0,” “on” or “off,” . . . ), and/or analog, assuming a continuous range of values. A typical control routine can be created in a controller configuration environment that has various tools and interfaces whereby a developer can construct and implement a control strategy using industrial and conventional programming languages or graphical representations of control functionality. Such control routine can be downloaded from the configuration system into one or more controllers for implementation of the control strategy in controlling a process or machine.
Measured inputs received from a controlled process and outputs transmitted to the process can pass through one or more input/output (I/O) modules in a control system. Such modules can serve in the capacity of an electrical interface between the controller and the controlled process and can be located local or remote from the controller. Inputs and outputs can be recorded in an I/O memory. The input values can be asynchronously or synchronously read from the controlled process by one or more input modules and output values can be written directly to memory by a processor for subsequent communication to the process by specialized communications circuitry. An output module can interface directly with a controlled process by providing an output from memory to an actuator such as a motor, drive, valve, solenoid, and the like.
During execution of the control routine, values of the inputs and outputs exchanged with the controlled process can pass through memory. The values of inputs in memory can be asynchronously or synchronously updated from the controlled process by dedicated and/or common scanning circuitry. Such scanning circuitry can communicate with input and/or output modules over a bus on a backplane or network. The scanning circuitry can also asynchronously or synchronously write values of the outputs in memory to the controlled process. The output values from the memory can be communicated to one or more output modules for interfacing with the process. Thus, a controller processor can simply access the memory rather than needing to communicate directly with the controlled process.
Several types of programming languages are used to create a control routine. A third part of open international standard IEC 61131 relates to programming languages and defines two graphical and two textual PLC programming language standards: Ladder diagram (LD); Function block diagram (FBD); Structured text (ST); Instruction list (IL); and Sequential function chart (SFC). Offline and online editing of respective control routines in each of these languages except for instruction list are often facilitated by third party programming software.
The ability to make, test, and implement edits online provides advantages for expeditiously performing maintenance, responding to a particular situation of an on-going industrial process, or other problems. This is particularly true for function block diagram (FBD) and structured text (ST) programming languages since these types of control routines complete an execution cycle with each controller scan. Thus, an original routine may be readily replaced with an edited routine without disturbing an on-going industrial process.
By contrast, sequential function chart (SFC) programming language usually does not complete an execution cycle during one scan of an industrial controller. A SFC is similar to a flowchart in that it navigates through steps and transitions to perform specific operations defined by actions and typically is used for high-level management of multiple operations, repetitive sequences of operations, batch processes, motion control using structured text, and state machine operations. Online editing of an SFC control routine results in resetting to an initial step of the routine, which can result in serious interruptions to the process.
As an example, consider a beer brewing industrial process that employs an SFC control routine with the following steps in the brewing recipe: (1) Add the ingredients; (2) Mix and heat ingredients; (3) Pour into cooling container; (4) Cool batch; (5) Pour into a fermenting container; (6) Ferment batch; and (7) Bottle beer. Each one of these steps in the recipe can take anywhere from a few hours to days or weeks. In a situation where the brew master starts a batch of beer and proceeds through steps 1 and 2, but upon step 3 a valve malfunctions the beer could undesirably be left in a heated container too long. The brew master can attempt to save the batch by changing the manner in which it is cooled, but that might require modifying the Sequential Function Chart routine code. Unfortunately, altering the Sequential Function Chart routine code to make these changes can cause the process to restart at the initial step, which is to add the ingredients. This reset of the process is undesirable since it means that the chart and the machine would be out of synchronization. The only way to rectify this would be by dumping the current batch and starting the process over at step 1. Alternatively, a customer could write custom code to implement such change. However, such changes typically intuitiveness of the SFC and online editing tool, and thus are often prone to introducing errors. In addition, such changes may require a level of expertise that is unavailable or otherwise expensive to obtain.